<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Accent kernel</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Accent_kernel"> <link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Accent_kernel rootpage-Accent_kernel skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Accent kernel</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1251242444">
/* start https://en.wikipedia.org/ */
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style>
<p><b>Accent</b> is an <a href="Operating_system" title="Operating system">operating system</a> <a href="Kernel_(operating_system)" title="Kernel (operating system)">kernel</a>, most notable for being the predecessor to the <a href="Mach_(kernel)" title="Mach (kernel)">Mach kernel</a>. Originally developed at <a href="Carnegie_Mellon_University" title="Carnegie Mellon University">Carnegie Mellon University</a> (CMU), Accent was influenced by the <a href="Aleph_kernel" title="Aleph kernel">Aleph kernel</a> developed at the <a href="University_of_Rochester" title="University of Rochester">University of Rochester</a>. Accent improves upon Aleph, fixing several problems and re-targeting hardware support for networks of <a href="Workstation" title="Workstation">workstation</a> machines (specifically, the <a href="Three_Rivers_Computer_Corporation" title="Three Rivers Computer Corporation">Three Rivers</a> <a href="PERQ" title="PERQ">PERQ</a>) instead of <a href="Minicomputer" title="Minicomputer">minicomputers</a>. Accent was part of the SPICE Project at CMU which ran from 1981 to 1985. Development of Accent led directly to the introduction of Mach, used in <a href="NeXTSTEP" title="NeXTSTEP">NeXTSTEP</a>, <a href="GNU_Hurd" title="GNU Hurd">GNU Hurd</a>, and modern Apple operating systems including <a href="Mac_OS" class="mw-redirect" title="Mac OS">Mac OS</a> and <a href="IOS" title="IOS">iOS</a>.
</p><p>The original Aleph project used data copying to allow programs to communicate. Applications could open <i>ports</i>, which would allow them to receive data sent to them by other programs. The idea was to write a number of <i>servers</i> that would control resources on the machine, passing data along until it reached an end user. In this respect it was similar in concept to <a href="Unix" title="Unix">Unix</a>, although the implementation was much different, using messages instead of memory. This turned out to have a number of problems, notably that copying memory on their <a href="Data_General_Eclipse" title="Data General Eclipse">Data General Eclipse</a> was very expensive.
</p><p>In 1979 one of the Aleph engineers, <a href="Richard_Rashid" title="Richard Rashid">Richard Rashid</a>, left for CMU and started work on a new version of Aleph that avoided its problems. In particular, Accent targeted workstation machines featuring a <a href="Memory_management_unit" title="Memory management unit">MMU</a>, using the MMU to "copy" large blocks of memory via <i>mapping</i>, making the memory appear to be in two different places. Only data that was changed by one program or another would have to be physically copied, using the <a href="Copy-on-write" title="Copy-on-write">copy-on-write</a> algorithm.
</p><p>To understand the difference, consider two interacting programs, one feeding a file to another. Under Aleph the data from the provider would have to be copied 2kB at a time (due to features of the Eclipse) into the user process. Under Accent the data simply "appeared" in the user process for the cost of a few instructions sent to the MMU. Only if the user process changed the data would anything need to be copied, and even then, only the portions of the data that actually changed.
</p><p>Another problem in Aleph was that its ports were identified by unique ID's that were assigned sequentially. It was simple for a program to "guess" them, thereby gaining access to resources on the computer that it had not been granted. This made the Aleph system rather insecure.
</p><p>To address this, Accent made the port ID's internal to the kernel only. Instances of a program opening ports were handed back different IDs, stored in a mapping in the kernel. Whenever a message was sent to the kernel for delivery, it would first check that the program had access to the port in question by comparing with the mapping table for that program. Guessing port numbers no longer worked, the program's port IDs gave no clue of the "real" IDs in the kernel, and any attempt to talk on one not explicitly handed out by the kernel was an error. Thus Accent's ports represented <i><a href="Capability-based_security" title="Capability-based security">capabilities</a></i>, granting rights to use resources as the result of being handed a valid port ID. This kind of capability system, using <a href="Access_control#Computer_security" title="Access control">subject</a>-specific identifiers for capabilities, is called a <a href="C-list_(computer_security)" title="C-list (computer security)">C-list system</a>.
</p><p>After a few years the Accent project started looking less and less interesting. In the early 1980s many felt that future gains in performance would be made by adding more <a href="Central_processing_unit" title="Central processing unit">CPUs</a> to machines, something the Accent kernel was not really equipped to handle. Adding to the problem was that a new generation of more powerful workstations were appearing, meaning that Accent would likely have to be ported to them anyway. Likewise Unix had grown into <i>the</i> operating system of choice for experimental work, both on operating system design, as well as a development platform for user applications.
</p><p>In order to address these changes, it was decided to end work on Accent and start again. The new system would use Accent's ports system within a Unix kernel, creating the famed <a href="Mach_kernel" class="mw-redirect" title="Mach kernel">Mach kernel</a>.
</p><p>Some features of Accent:
</p>
<ul><li>Port capabilities</li>
<li><a href="Copy-on-write" title="Copy-on-write">Copy-on-write</a> <a href="Virtual_memory" title="Virtual memory">virtual memory</a> management</li>
<li><a href="Distributed_filesystem" class="mw-redirect" title="Distributed filesystem">Distributed file</a> management</li>
<li><a href="Distributed_processing" class="mw-redirect" title="Distributed processing">Distributed process</a> management</li>
<li>Protected message-based <a href="Inter-process_communication" title="Inter-process communication">inter-process communication</a></li>
<li>Ability to run processes with different <a href="Microcode" title="Microcode">microcoded</a> instruction sets.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<p><br>
</p>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFRashidGeorge_G._Robertson1981" class="citation book cs1"><a href="Richard_Rashid" title="Richard Rashid">Rashid, Richard F.</a>; George G. Robertson (December 1981). <a rel="nofollow" class="external text" href="https://dl.acm.org/doi/10.1145/800216.806593"><i>Accent: A communication oriented network operating system kernel</i></a> <span class="cs1-format">(PDF)</span>. Sosp '81. pp. <span class="nowrap">64–</span>75. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F800216.806593">10.1145/800216.806593</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>9780897910620</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:15890135">15890135</a>.</cite></li>
<li>Myers, Brad A. . <a rel="nofollow" class="external text" href="https://www.youtube.com/watch?v=0CDRG5BjGmU">"The User Interface for Sapphire,"</a> Human Factors in Computing Systems; SIGCHI '85 Videotape Review. San Francisco, CA. Apr 14-18, 1985.</li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2024-11-24" href="https://en.wikipedia.org/wiki/?title=Accent_kernel&oldid=1259244207">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>